package com.stark.commons.lang.util;

import java.math.BigDecimal;

/**
 * 数字处理工具类。
 * @author Ben
 * @since 1.0.0
 * @version 1.0.0
 */
public class NumberUtils extends org.apache.commons.lang3.math.NumberUtils {
	
	/**
	 * 四舍五入。
	 * @param value double 值。
	 * @param scale 小数位数。
	 * @return 四舍五入后的值。
	 */
	public static double toScaledDouble(double value, int scale) {
		value = new BigDecimal(value).setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue();
		return value;
	}
	
	/**
	 * 四舍五入，保留两位小数。
	 * @param value double 值。
	 * @return 四舍五入后的值。
	 */
	public static double toScaledDouble(double value) {
		return toScaledDouble(value, 2);
	}
	
	/**
	 * 计算百分比。
	 * @param up 分子。
	 * @param down 分母。
	 * @param scale 小数位数。
	 * @return 分母为 <value>0</value> 时返回 "--"，否则返回百分比。
	 */
	public static String percent(double up, double down, int scale) {
		if (down == 0) {
			return "--";
		}
		
		String percent = String.format("%." + scale + "f", 1.0 * up / down * 100) + "%";
		return percent;
	}
	
	/**
	 * 计算百分比，保留两位小数。
	 * @param up 分子。
	 * @param down 分母。
	 * @return 分母为 <value>0</value> 时返回 "--"，否则返回百分比。
	 */
	public static String percent(double up, double down) {
		return percent(up, down, 2);
	}

}
